/*
 * Copyright 2013-2025 chronicle.software; SPDX-License-Identifier: Apache-2.0
 */
package net.openhft.hashing;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.ArrayList;
import java.util.Collection;

@RunWith(Parameterized.class)
public class MetroHashTest {

    @Parameterized.Parameters
    public static Collection<Object[]> data() {
        ArrayList<Object[]> data = new ArrayList<Object[]>();
        for (int len = 0; len < 1025; len++) {
            data.add(new Object[]{len});
        }
        return data;
    }

    @Parameterized.Parameter
    public int len;

    @Test
    public void testMetroWithoutSeeds() {
        test(LongHashFunction.metro(), HASHES_OF_LOOPING_BYTES_WITHOUT_SEED);
    }

    @Test
    public void testMetroWithSeeds() {
        test(LongHashFunction.metro(42L), HASHES_OF_LOOPING_BYTES_WITH_SEED_42);
    }

    private void test(LongHashFunction metro, long[] hashesOfLoopingBytes) {
        byte[] data = new byte[len];
        for (int j = 0; j < data.length; j++) {
            data[j] = (byte) j;
        }
        LongHashFunctionTest.test(metro, data, hashesOfLoopingBytes[len]);
    }

/**
 * Test data is output of the following program with metrohash implementation
 * from https://github.com/jandrewrogers/MetroHash
 *
 * #include "metrohash64.h"
 * #include <stdlib.h>
 * #include <stdio.h>
 *
 * int main() {
 *     uint8_t* x = (uint8_t*) malloc(8);
 *     uint8_t* src = (uint8_t*) malloc(1024);
 *     for (int i = 0; i < 1024; i++) {
 *         src[i] = (uint8_t) i;
 *     }
 *     printf("without seeds\n");
 *     for (int i = 0; i <= 1024; i++) {
 *         MetroHash64::Hash(src, i, x);
 *         printf("%lldL,\n", *((long long *)x));
 *     }
 *     printf("with seed 42\n");
 *     for (int i = 0; i <= 1024; i++) {
 *         MetroHash64::Hash(src, i, x, 42);
 *         printf("%lldL,\n", *((long long *)x));
 *     }
 *  }
 */

    private static final long[] HASHES_OF_LOOPING_BYTES_WITHOUT_SEED = {
            8097384203561113213L,
            1044577374344929784L,
            -5864552078195947561L,
            -652945930055421170L,
            5605114851788525250L,
            9162498495365103743L,
            3049634980734288402L,
            7920800282904516253L,
            -8901068814386155510L,
            -5901894357248548474L,
            -4442680982679403480L,
            -8423217189212439885L,
            4985401472247169651L,
            -1992016646794417405L,
            3600439162989664675L,
            6457012038296068588L,
            -4586033983729356733L,
            6401437600913691353L,
            7876119423666594762L,
            5810323175355255905L,
            6904102517298367857L,
            1620293272315935805L,
            8554611790211169601L,
            -962272284879482472L,
            306291708087251447L,
            -829535584436024263L,
            -8147341501831720195L,
            -9201286723112175676L,
            -2594769739999856548L,
            8847738780328401782L,
            -6413860574742604697L,
            -6498799199878505481L,
            721458544528261182L,
            -1547311253625531333L,
            -5434202052352542283L,
            2978420360194479325L,
            2870183696785941017L,
            1932654137414396323L,
            5182424313890381714L,
            -8365449621087573270L,
            -3833298574876674234L,
            -3152393004348237091L,
            -6838373821748142935L,
            -8023315224129817776L,
            -3102118337920015536L,
            -499825667162541606L,
            5364861628934104294L,
            -6805515093327615627L,
            -3648439810929113190L,
            4672842716328884369L,
            5923713539761360080L,
            2543019548974377599L,
            -1186730364595429686L,
            -1197948832377762999L,
            -4316599373139287574L,
            8464735609655565334L,
            669333280747559441L,
            3740365435314006988L,
            -8608917104555791263L,
            -2099033495551690392L,
            -3804112397876252435L,
            -8048561269618120944L,
            -7267270013424685735L,
            829180948937813165L,
            -1659918396381704247L,
            5590092321420423548L,
            -4614103232438527236L,
            1304326733288903347L,
            3597579889373610428L,
            1242991328812514956L,
            -5782258649083124507L,
            8801568313986587977L,
            -3044921407907030514L,
            -586959553024205787L,
            -8293940547468744696L,
            5070304196111736204L,
            -8802183351086307281L,
            2366722645019030289L,
            -8797064226753510021L,
            399569655371175345L,
            -7523360574303841037L,
            6643001131982513834L,
            -5895991888306257757L,
            7609728718286089195L,
            -8581210377006571656L,
            -516493634591134704L,
            624295798814698767L,
            -4820117744743157605L,
            1783566461162783626L,
            8307290241214762177L,
            5118896358382597191L,
            5424830972589936869L,
            2492758648872896535L,
            70290404973473132L,
            3920780432486157896L,
            186909171415727538L,
            -2602467687300570439L,
            -1927282670122243366L,
            -1758514769445232997L,
            -7471028634375274275L,
            -4345341002699104066L,
            -9093723967193306254L,
            5884556681722096462L,
            -3376040480345930573L,
            4339452235873411909L,
            8835528305040771560L,
            8748686030330753205L,
            4383946075636770097L,
            -3432270044398630100L,
            -8120830458828380707L,
            7589397956614405323L,
            5312473908489913526L,
            8258634165904820373L,
            -5667170392413421622L,
            -5918076728492851028L,
            8735320991375266324L,
            -7501795160872390651L,
            -6038583889121400079L,
            1645192271013906650L,
            -6122624000106027906L,
            -725176628402543800L,
            8950909266029234157L,
            5612791268282262521L,
            -8846294769021460484L,
            -993662753519520847L,
            4159895544016249165L,
            -1077207387464523661L,
            87250015253602852L,
            -5567641283414351530L,
            2088130829126391306L,
            2048031310653858443L,
            5854650319997072456L,
            -17166001528007789L,
            -5386332499672078157L,
            8272953585098336824L,
            4611177191103964940L,
            -1789267561605105069L,
            6868287516382783656L,
            2284628568485123884L,
            6330914591272297852L,
            1240072398641394757L,
            4069456730519818742L,
            8524967309487997581L,
            -3202379637974424356L,
            6430899570361525771L,
            2664611657980819888L,
            -164978077531416214L,
            -994136401652886288L,
            7588210675159984766L,
            -7873663131468532421L,
            -4634753117373271359L,
            -5981185249638022999L,
            1494758063489142719L,
            -7455105807626987638L,
            -272667250264799364L,
            4654410233917678566L,
            230439003553570652L,
            7271931744845291225L,
            -6409427077199681998L,
            -9040751657412600797L,
            -8047910111492715538L,
            -903727900274244859L,
            640185402569424376L,
            -384419735150507237L,
            -3289944581090364822L,
            861125435613492612L,
            -9166048566495223196L,
            7951192459342485240L,
            3314960995044766664L,
            -2020306603729474046L,
            5483944741237983717L,
            7165419217663582614L,
            1373901275622169148L,
            -3142008195874874045L,
            389824227137254033L,
            5518091747743552550L,
            6685791826481014803L,
            759109905850636833L,
            2673680074668114205L,
            286310666901518844L,
            5857793593042004679L,
            -2942735516369958576L,
            5700491317573542694L,
            3421282620396569882L,
            -2182082626068668349L,
            4925552241449377375L,
            8698485408901163458L,
            8715655436566877045L,
            -3662422870543184580L,
            -7010091469308074247L,
            5543945876035298051L,
            8645811397510921307L,
            -6687947709402120892L,
            2866451328008743733L,
            -2274418293915427350L,
            3615522582815943918L,
            -6157196288647108241L,
            2137194071194338655L,
            8038278786744340503L,
            5585068934473093041L,
            -3848210755437806746L,
            8107981948361946677L,
            9177726169596104540L,
            8937470746408718377L,
            8886099356526808471L,
            -1126818854561070858L,
            -8285044891528560662L,
            8412230795631320012L,
            -3164599933902632650L,
            7155304414149348525L,
            -5825551234758990511L,
            -7945782750859862454L,
            6829609988930754478L,
            -2109474837797754859L,
            1167489800098406259L,
            8906541816950041134L,
            -5974561835912220090L,
            7110885565660112625L,
            2422996175057185032L,
            -6883266575953186259L,
            108476007718240914L,
            317379481526339309L,
            2933327908104246626L,
            100314786401351528L,
            4308496772751671048L,
            752092984435467344L,
            -6404882535426429123L,
            -6301618991019450454L,
            6126207247385455303L,
            -6871627711949594660L,
            2123694135183976862L,
            -1096329840063863022L,
            -1939260049750184493L,
            -4385993800733454176L,
            8852361853923956670L,
            5803372705406804791L,
            -8836752988779621057L,
            -6103084587979784656L,
            1670292145742515006L,
            -1884037659670609779L,
            7214880316980452285L,
            1835023432399694808L,
            -8174769043040988813L,
            8548806912237742316L,
            -1298663267692232691L,
            -7208113667778468135L,
            1491472845860082731L,
            7233902167229630571L,
            3161417524278027205L,
            -2862741577929446341L,
            4671222205822923039L,
            -3933238905497612026L,
            -8253926784047939269L,
            4412872515910674694L,
            1946943384235077241L,
            3600475141763974651L,
            3567535511030930488L,
            -9160381287362558253L,
            5854411969413214859L,
            4012182752243140743L,
            -4566235853679965150L,
            -3145904010637879829L,
            4290301869274717092L,
            -5531154784541642185L,
            5707432916746049134L,
            6468310218110042719L,
            902128836034751594L,
            6036617397745505152L,
            -6623736856050763730L,
            -2529627723323032231L,
            -6281269080932620405L,
            1763691960189046732L,
            -7674447830923783464L,
            699236482957280737L,
            8459893361921956655L,
            8859330112225492827L,
            8387369821404588027L,
            -675098972839571746L,
            4400056823688153206L,
            9156856137727388282L,
            1717955579235738278L,
            -5813820702253293427L,
            -3884684174501385795L,
            3600363744831564827L,
            152112472975600193L,
            6587832209556089301L,
            6976506140071409529L,
            8955248062202687185L,
            -3590297490861568921L,
            2961833149900883692L,
            -1894267153006417237L,
            2237093868909010712L,
            -2789050163252106731L,
            3860414228956783079L,
            -3951007235852704100L,
            -2838536811571541080L,
            7903552432865550494L,
            8938731486074055278L,
            36151422580418505L,
            -322299366150332555L,
            882020790249774244L,
            2905275433908028776L,
            -6965440711577378447L,
            7464522104797842524L,
            7856370428571869876L,
            5360233462098817298L,
            2773889321832099742L,
            8904821699803178735L,
            6753240655891225863L,
            6022123906493531458L,
            8009290494781680698L,
            -1699455692008010089L,
            2170597305039390283L,
            -6953376452170276051L,
            -7807090849818026168L,
            7301712847565761426L,
            -386271272340484483L,
            -1095141309911998125L,
            -6495793610221856828L,
            -1853851555304252154L,
            -1851827857845811775L,
            -6954212783862939373L,
            -1164140553742911392L,
            -2323595987055696264L,
            -3519754761435654012L,
            -7833334521632067138L,
            -2200395118098817458L,
            -4118090048284768814L,
            1222709081378810279L,
            7001253063854756288L,
            -7823107979115397150L,
            2553594263704871889L,
            -9109397002628107950L,
            4342426125116600847L,
            816796388918796186L,
            -4515448325366247877L,
            -4941305754127991830L,
            -5522643721402495917L,
            5174288348088067781L,
            1926567870955181585L,
            6272412704848407363L,
            9214240968716690635L,
            496391666764324546L,
            2433829878402056359L,
            -7986253130682272311L,
            4426839183135217146L,
            6284221814287165334L,
            -5860194936483692130L,
            8360260569393882580L,
            -56386356826495892L,
            -7998729400542990015L,
            -6948256067912297152L,
            -6625507797483364409L,
            2590207303131686633L,
            2430452531640802693L,
            7824113894910836804L,
            1630146611236693919L,
            8630323195193036055L,
            5918534788727172548L,
            -1051075410493051207L,
            2718069615174595492L,
            -5957244668704140818L,
            6420648343294656529L,
            5096375559152751799L,
            -2318199780993341049L,
            -1321458791101153998L,
            -5321297231689626640L,
            7719878346207021660L,
            -162502748868556924L,
            -9220018422911272421L,
            7182363000924091L,
            -4083038201133657280L,
            5027429419521904465L,
            5792498333636437466L,
            -3708041906374560047L,
            7282945809762705940L,
            6465571173772035961L,
            -1210187577296215971L,
            5254020890810085972L,
            6906151905785989436L,
            -6518423675346775214L,
            -8409842390898669914L,
            -8290797899301022559L,
            6818141801775478742L,
            1438858478125271034L,
            7680569510563245669L,
            -6433821547623412847L,
            3943635499549328887L,
            -8482674086282869117L,
            -4634915998062324298L,
            -3215096680093146868L,
            8988469622828277756L,
            -3904480630433558770L,
            8833162464590161190L,
            -677492828076227750L,
            1373882964421534174L,
            6798433511338689623L,
            5880914300991730079L,
            7834477863099838179L,
            4870256198560098351L,
            2164105137487085459L,
            2364108895707982136L,
            -2288773308136248605L,
            -3602014936564088609L,
            -1798239348480383581L,
            -319583625095133691L,
            -5643655100482772980L,
            -7743654559481285645L,
            3817086126298222743L,
            -5403599189307880337L,
            3824124380223029833L,
            3740269566680103514L,
            -911340145447160659L,
            1606148833443326963L,
            -2509351747416167242L,
            -8428330459277422091L,
            -7133266382112606098L,
            -4966213194587898346L,
            -7484299806204516099L,
            -6118605375730084551L,
            5571969459383347335L,
            3765415653564623847L,
            4936261667700023110L,
            4966422299275481692L,
            -7300446415309174651L,
            -8690327806959392301L,
            -5502986894575996310L,
            8130963740522405624L,
            -6429864514018716977L,
            -4092024494699588697L,
            6775558266522691491L,
            6272308333407530424L,
            2215035268775126522L,
            -4615578414005877947L,
            -929627422186402532L,
            -2443268022084582180L,
            -8511894731907725773L,
            9208682815564140063L,
            -3753828783340477183L,
            -6030476507770748314L,
            4793314534831555265L,
            2016531843452980273L,
            8123771319324291327L,
            -8853015305379284679L,
            -3100054214905304183L,
            2365614233618267068L,
            7688779099287716368L,
            1253218027173060603L,
            -8984573615072223051L,
            -1597979217306226038L,
            1164742759854075686L,
            -8365532733453451984L,
            7788258476597682881L,
            7871207172030414754L,
            7909395227899534487L,
            -8904187021159540210L,
            3175099500484763811L,
            1003876557078586148L,
            -8639796641840901163L,
            4896072529355645974L,
            -1024679950509095561L,
            -1552774269860675750L,
            1716558732021730941L,
            -3896299485222065840L,
            -3227186245899010231L,
            113034798418334935L,
            -6843658922592119188L,
            -7179749779429233272L,
            9123271538595651421L,
            -7506175699668049430L,
            -320002921050479476L,
            -3841132632337704792L,
            2588215165976538298L,
            8802433630717299484L,
            -4812584759507189610L,
            -1750816863251798988L,
            -1306809313259624684L,
            2399230711312872995L,
            5508109338734019542L,
            6811945242876721489L,
            7758901126409831760L,
            -3374003870138375959L,
            -2976248659655780681L,
            2624007091858557091L,
            -8546307511134488333L,
            -1016440632973975082L,
            -6823107191220928499L,
            80017023900595733L,
            2778352878224505814L,
            1117456482817259379L,
            -4114841340553859137L,
            8625162146994200248L,
            8705721747529764702L,
            -1705613497829513155L,
            3282075641198786338L,
            2144616047247065999L,
            -7371715756920009378L,
            6447821262696838792L,
            1171810352311288635L,
            2508561380122271729L,
            5995637427565273285L,
            1697619529106989062L,
            -3233303943306354970L,
            7041109532802269214L,
            -2334372840573669170L,
            8291861929387643666L,
            -4776017684101214670L,
            469757484925320043L,
            -8917174930463673523L,
            6475551743441148637L,
            344295474002146570L,
            4605572139105182787L,
            -2452882870325212080L,
            -3501912965890300818L,
            -6652126694168671719L,
            3959897949352791500L,
            -7055167767388765380L,
            6893297453969238921L,
            2581002218727017140L,
            -7717169286786431051L,
            883479824587359522L,
            306427391231565673L,
            5173715305932218712L,
            -6535166344135272862L,
            -1193326735253909310L,
            2903635483410291380L,
            -322482795588720176L,
            4516516585677193322L,
            -1879724875640959739L,
            -2815996835129973766L,
            4301222350485103401L,
            7429061037350483710L,
            8350299954006628979L,
            5673640833236864187L,
            -4693644981873774245L,
            2435588258891909206L,
            -837538898308422808L,
            4675812205322396290L,
            7946309234198174335L,
            -7133491594692641181L,
            -5455979661591643103L,
            3826551962337887511L,
            5663204072196396497L,
            -5147694621038207777L,
            -7105803559227170848L,
            -8700431237593824692L,
            3511082833046076691L,
            -4228563534936249264L,
            9031917954326484284L,
            2895450531761685267L,
            -3132984939538681366L,
            -1585688170335533449L,
            2731393314177314112L,
            -5905363650353607502L,
            -4455356714707800318L,
            2978829060171994660L,
            -972189024273700859L,
            3062845477559124330L,
            -3716077282261599329L,
            -344225023287336451L,
            1762126100163942284L,
            562456063702988618L,
            2020573952718827259L,
            5862340763145465595L,
            -1247992692397136315L,
            -1578257477195502698L,
            -6993960154473630574L,
            440565506262244704L,
            579449574802945451L,
            7189404159186185750L,
            -4571888471156996941L,
            -95472952856091474L,
            6822425980885442346L,
            3786482654075230347L,
            87868071778926364L,
            2954854203273314241L,
            -5524287603851214589L,
            8763380461533412416L,
            2015012325950047659L,
            -8261625429066723482L,
            7603592588949868421L,
            1621385825993457403L,
            -4824259650821471313L,
            3980074653673447593L,
            4855889493919599614L,
            3745576424368859036L,
            -2039186531914722799L,
            -6626423610563062989L,
            -639219732357877548L,
            -701818008228676127L,
            5472874129065188121L,
            8259647238620881212L,
            5774546974358230750L,
            8612494520125985740L,
            -6617700659752091079L,
            3086835181286086051L,
            264843040747796409L,
            -6448641378896811689L,
            -4164288334133467422L,
            -2199630779446937940L,
            3783171254610937275L,
            -1846404505322088381L,
            -5550334958957325836L,
            -4278462725762298358L,
            -7657982570511268266L,
            -6346726875901980852L,
            2132899756132160462L,
            7416231413915659799L,
            -7124488429155425942L,
            6318537201931895644L,
            4811602110530325482L,
            -5950872825025503112L,
            5760141675862964362L,
            -8648755991702555774L,
            -4555048593801247543L,
            -1353961632758500323L,
            -9074770788264581302L,
            -4437784083457655096L,
            -2124113085446132358L,
            1233449115608944926L,
            4748332252353405223L,
            -6670684304818242084L,
            -6755344184034142246L,
            2688732276185151216L,
            6865070831684966277L,
            -3908750913937844462L,
            2544851366710186883L,
            -2812535304674619295L,
            -170930286752545749L,
            3398852598461476637L,
            -2630359307602670140L,
            -3207143446781707365L,
            4985023070682188881L,
            -4620309129534390403L,
            -5683889211406348281L,
            -311222018775395306L,
            7778653441065907707L,
            -7273974029970510733L,
            -4696180916214440764L,
            4252214492109342747L,
            4846746978999514759L,
            5767477546719490985L,
            1665406251486337417L,
            -8124115633527619070L,
            -9185982153344567456L,
            6042515010716397430L,
            -5922928560960802176L,
            7648988567252803851L,
            4413089143319133084L,
            -8113054053282999902L,
            2303952291191627889L,
            8248179207888895832L,
            -3498329679811031446L,
            -4044613820796834115L,
            -4842567709132673688L,
            -2737454127766028783L,
            -8488077406465832193L,
            -3939689039327696587L,
            -8261875210650176069L,
            5212117704876665232L,
            -7358065049749571336L,
            817847433252038583L,
            6755374609408890184L,
            -5809280327990958753L,
            -8811424079569198649L,
            8265932929256352254L,
            -2662884829510366724L,
            907687126831737797L,
            6979623597246178293L,
            -3647661970874359160L,
            2722401403574692503L,
            8743886856356822917L,
            -521659802761237558L,
            -5600123113180371288L,
            2816018730756718272L,
            -4224278458512765555L,
            -867497510176087507L,
            -4977996888810067816L,
            7274623153856746512L,
            -2286111906416935950L,
            -5204380697224167522L,
            -8721963035159051150L,
            -7671687206062671316L,
            1268843632519894109L,
            -714284277132163673L,
            7843753351785148187L,
            2621756914244617409L,
            -3664215164092341091L,
            -7097184417664837097L,
            6058927555047311751L,
            -3453112785544952090L,
            -4254274149473277535L,
            6951351339734018917L,
            -8605239498801121089L,
            -7085903150789967055L,
            -8217416917504606554L,
            -5345397810318018249L,
            4372333618562459379L,
            -7195087882603408840L,
            693310039750329605L,
            -6466324586307690788L,
            -7403499246725846306L,
            -3747840957885485212L,
            4519539790464107576L,
            -8071757005970625639L,
            -8020530917018250756L,
            -7834805225994265879L,
            -6019273545097874156L,
            -6474306854881165899L,
            -6648007297179802503L,
            -2896695036969816993L,
            -656272709898718099L,
            -2195078090878558356L,
            -3476280830699024685L,
            -488662113871333352L,
            -3925029261618636077L,
            6444938707035837546L,
            8570850581618701335L,
            -4578323017282417906L,
            8582580303047432647L,
            -8937714398596133819L,
            -1968459747971032295L,
            5752330688007681271L,
            -8000393632802052931L,
            8046290377666978960L,
            1673839048754203395L,
            -8997298828999512608L,
            2039511390477630696L,
            -4947047129296997096L,
            -7083256884807951181L,
            -21469282774129783L,
            7513569752595487724L,
            2275940929828079306L,
            1750901636981877398L,
            3449977287189348513L,
            -9031064428876145778L,
            -7565363388782332128L,
            -2086340182673839543L,
            457644857802068841L,
            8285506946097601770L,
            3279522553611802246L,
            4466070878937438187L,
            430119955670591096L,
            1749255239146859969L,
            3047836908631508222L,
            -9156953162726362130L,
            -7457969959970262381L,
            -1000784779336817010L,
            4258349318563076791L,
            3133342237739133757L,
            2939965088108773247L,
            3395876346224377137L,
            6315377331109374665L,
            -4740508118921826478L,
            6968316880011843506L,
            5062507289277017735L,
            7419645221134344026L,
            -6352394745782370696L,
            8264155718881947357L,
            6252653138274277618L,
            -8483214678706669540L,
            1916000352877309974L,
            2382837122989829888L,
            644253791190911956L,
            -1151699908752571569L,
            -6559111721605019721L,
            7345192407486880951L,
            -4478532786046373305L,
            -6950940564485218737L,
            6428714661822661869L,
            2519849223669197108L,
            7376706404386293225L,
            1501882319981554397L,
            -943252517474755626L,
            7714226512757813005L,
            8416107441772307058L,
            -4472657579811768728L,
            5087592051145532964L,
            6438387611375028880L,
            8584104116495862700L,
            6377860858078003270L,
            -2971074825974926343L,
            -2937865448156911693L,
            3536948612294800637L,
            8353554602400037622L,
            -1068895156774638063L,
            6114353090885597960L,
            -2777927837473820931L,
            -4744208027823638247L,
            -4540453915890259618L,
            -4834864503835756656L,
            7498460529546421348L,
            -3188602217901809535L,
            8470200248135783133L,
            9075785968708802047L,
            -4752049482808232089L,
            7738134740724945214L,
            1223529062319363138L,
            -3292097383231979480L,
            7644700351741695200L,
            -6359625986829412580L,
            -1695578259991785122L,
            8293592734966370105L,
            -6113313058357521105L,
            -2020012500193218891L,
            1102747793161390825L,
            -4003274055267937716L,
            -7041493841691013922L,
            -9008245925640843695L,
            -3715273511780112530L,
            -9087364888825076289L,
            -4677314055946402655L,
            3685095352371270384L,
            7040659519083254063L,
            5767677790549528273L,
            -2730588307711893606L,
            -9096427185734800193L,
            4457387895978624783L,
            342109157759248230L,
            -38861981524212890L,
            -6120502454581506093L,
            -7822920307768716632L,
            7867747532024464326L,
            -8467340638383947844L,
            -2179074319376101184L,
            8256705450292319920L,
            3234636801936718716L,
            6271541693889821802L,
            -3572981024083835868L,
            -4137314349330927569L,
            -5929917053295731603L,
            2794195909472559138L,
            5883940138704763306L,
            2803820769763325603L,
            -2973692431706386339L,
            4627976253591444422L,
            -7819213690030374705L,
            -3724338982506119918L,
            1985102366965450080L,
            697278019419464922L,
            -4576686955718076276L,
            3683394582191401410L,
            2783529451376765079L,
            974923899445810273L,
            4823693500376892905L,
            -2793376265343600619L,
            822549242564602886L,
            -7029229476798442718L,
            4539929655287667633L,
            -5867853127651647134L,
            2829435250982761148L,
            -5221278931486481530L,
            3515664783021533510L,
            7272936812404672766L,
            5125133848751834239L,
            -1551987698443003922L,
            1303708007058968884L,
            -4898488429912128916L,
            2807299832527283388L,
            8598402961389558639L,
            9079561631935403774L,
            5276974659730812601L,
            -8106902618926748889L,
            7622105220354369613L,
            6992848874969927884L,
            -8455553371748915330L,
            7189497606082861275L,
            -7895654260442802503L,
            5941344482493698958L,
            5844758450785894815L,
            -8332152864129976231L,
            8952015463761129568L,
            -6617482363749006014L,
            4906969757453324980L,
            -8500367115612406176L,
            -4261571668663014826L,
            -6144421554585509158L,
            -5031070911169211252L,
            3192404459613743393L,
            -6282380813393931312L,
            -5632745553630275745L,
            1733979566728411260L,
            5528019950962309395L,
            6327887160867826723L,
            3294123587652779905L,
            -3206550652083748711L,
            733731183703641873L,
            -2696497018746997756L,
            2062243999410935941L,
            798823703796369880L,
            8371421064475180679L,
            -5911118765375763510L,
            8429565922014556196L,
            4081415577454846643L,
            7564838534895349366L,
            8649601160387175162L,
            6623399961798946622L,
            -1581039767574156378L,
            -384236061493983199L,
            -3811922859733049769L,
            7996689318581168254L,
            -1174187173237874671L,
            -3213634145263006052L,
            -7903816790075507007L,
            6160284216851731656L,
            7547512322332229932L,
            1091558409106329111L,
            -3913799136869440000L,
            -454162306694901267L,
            -8576973812951316130L,
            6595552311443334832L,
            1765031977628269038L,
            -3252971643769494212L,
            5202394998008759208L,
            -5536568343831441009L,
            -8922256302214622077L,
            4605673077218271479L,
            7908355518944782539L,
            385100315131148409L,
            5396097233905724622L,
            4961313530987471608L,
            1166006294127829821L,
            -8366193463474266335L,
            -8462057180154938298L,
            -5685290369154220144L,
            8229644146291208030L,
            -7995884687254970110L,
            9179715927974567869L,
            1303116223847269826L,
            2968314124644606559L,
            679372627397688808L,
            2293912413110664087L,
            -1023040086727751449L,
            -3082540700175995734L,
            3287587376753717880L,
            965308208337482905L,
            -6985831259847685602L,
            739349585606217366L,
            7257567395494302221L,
            -681351524840412200L,
            -2780721117113868629L,
            1931502018854773824L,
            3337164298257078765L,
            -8290248359269789212L,
            -7232393620745748261L,
            -4877232945917798159L,
            -2565342931000598902L,
            8066254793589059969L,
            -2958901889448167910L,
            -7016444092052512002L,
            7348926457022988439L,
            6834068827682565595L,
            -8044427732798781063L,
            -541153262297657390L,
            -3273087969919483763L,
            -2594081647186952351L,
            8302390146746781457L,
            6847880036390060421L,
            -8887996709304067476L,
            555119562201896096L,
            -3416029211334750374L,
            3945056206579065612L,
            5755167184108224091L,
            -6489913436466868289L,
            -2417581148047954555L,
            -7703129618843183191L,
            1945510553386505133L,
            353708758376179582L,
            -7354507566475184377L,
            9181907787826882126L,
            3875739782276173961L,
            -6422366101106813014L,
            5320622636582471784L,
            6865594268203621661L,
            4227027551589918749L,
            -2749731705446359487L,
            116208262816303496L,
            -1129499496747245630L,
            -7529233179761643254L,
            -9079787512005977179L,
            -7281760820118193858L,
            723416318706676070L,
            5682536200846098060L,
            2138940028276005397L,
            1396617290455816677L,
            -5721204657281958325L,
            4318425600638179983L,
            -5650894138518292906L,
            -5925082168321133374L,
            1834886828857839729L,
            6559799567438765468L,
            -564499092269750830L,
            1489630054678810438L,
            136063040060393882L,
            6548430710668999898L,
            6081471086084364133L,
            8785308229573530758L,
            -1903170272916692054L,
            4095043474616344586L,
            -7031315114113980625L,
            -5660256248200681603L,
            5757692424313888979L,
            537346480241338089L,
            -6377627444279302651L,
            8478599939664142937L,
            -3456991897046134535L,
            -5261860653933719243L,
            1037998259991950051L,
            -718053001033318465L,
            2890361104874294604L,
            7465764119437997639L,
            -7997774444462951660L,
            6461027577212167396L,
            4282128978408553867L,
            -5935302539533983185L,
            1995103380033226391L,
            -8488559516014758423L,
            -7746118478558671206L,
            2274574971276760480L,
            -6395462630028702823L,
            -4448311714863703302L,
            -3006383532980173507L,
            -2917084870036186466L,
            -9072315522104469620L,
            9003958434955366904L
    };

    private static long[] HASHES_OF_LOOPING_BYTES_WITH_SEED_42 = {
            6500896835765953563L,
            -5864898193651956393L,
            -8878504184760441104L,
            -4831118489104880181L,
            -3329817178771344369L,
            1449329502265636436L,
            -3396890690420552294L,
            -8756069105729998125L,
            8784677836787741966L,
            -1639318350463920481L,
            423768199724124288L,
            -7881535583097569012L,
            3550928925074454708L,
            -6882231001909553689L,
            4251887311069352414L,
            -5530054772250798496L,
            -179673013314278291L,
            -1905898053172455024L,
            672259466869531299L,
            -7057579506866890263L,
            1257664213187295540L,
            -7747922240406771206L,
            6575872349325278471L,
            8106145520824445287L,
            8352000476587022721L,
            6324092859984030821L,
            -5717689092961742629L,
            1571499459400361879L,
            -7215275515035357249L,
            1744854719992406828L,
            7407514452538698138L,
            1699559522898007339L,
            976492782760127192L,
            -1127256192654463655L,
            1894608840885814672L,
            -4653073485358521139L,
            2181859481566763903L,
            3555812162853367686L,
            -8672259556063280314L,
            -1681447837064475963L,
            7789032089742020358L,
            5453950668385526151L,
            -6945344405690666969L,
            968919485359012613L,
            -95405462326217157L,
            -4853896923605859331L,
            -7143273200113034665L,
            -8618571618261678361L,
            2749009191700401557L,
            -3064464498592138474L,
            7871853326685786774L,
            2853018743143088024L,
            3209212038241590388L,
            378376763964648643L,
            2783022601545339762L,
            3702045517091870681L,
            7884521882783041337L,
            1445243929481143381L,
            -8121022416988267073L,
            -3429064018419489884L,
            -6779755867281824829L,
            1174788596012421982L,
            3678792216218313028L,
            -5713213669935845080L,
            6018859453082393726L,
            -200368139027381472L,
            5835840414867149806L,
            -6114844224162629308L,
            -8047002638545879746L,
            -4485308880803534790L,
            640999568867916L,
            4283894950037815462L,
            4859665454367167153L,
            8278574647712456773L,
            1054387545213098239L,
            6133697149865175074L,
            4197621595339710373L,
            -6067474399470383404L,
            3190253963206703887L,
            1844812974356900353L,
            -8836646989382535796L,
            -4448652061381380622L,
            7025819260678298320L,
            2883571344787161324L,
            -4241406755499227310L,
            -9174245017417018076L,
            -8776263116570656661L,
            5915494397778446201L,
            -7013239076047745773L,
            -6596657252716219591L,
            2609930720015173110L,
            -3400580388341610733L,
            7992958191968561564L,
            7169503313960378842L,
            -7823397656248797927L,
            403070279590358277L,
            95509717604870655L,
            -4471160821636821878L,
            4309454772985034949L,
            3451886949585053009L,
            4744065382316810816L,
            -4559264224684070998L,
            5955595131940965529L,
            8733815900910249823L,
            8813448048829551597L,
            -7300271845178486044L,
            -5623523768512222946L,
            -8611618141886701490L,
            -6958267263568904552L,
            2682505017171715024L,
            -8127319343035253449L,
            2878402311431231905L,
            2755085578901659746L,
            -1174352794085888584L,
            3213349320378676444L,
            -6909679015870474032L,
            4440574613114951451L,
            2259418801247509180L,
            4023908484636424884L,
            4318603844156884339L,
            4668848396317042439L,
            4302819388786445024L,
            583870779544076186L,
            5864932551976205334L,
            -4540485679989105760L,
            -3442677510969705430L,
            -1463382325986140209L,
            -502906404112723352L,
            -1721352953581919213L,
            5287431715554446824L,
            5963318466195149363L,
            7826862827358589845L,
            5907201271694374895L,
            5670912343382927237L,
            2536541680099877791L,
            -5892513005054012890L,
            6930897501148653327L,
            -5013375003971229628L,
            -7461786274230082710L,
            2293456359821378296L,
            -8532552855978884643L,
            1392314667362338908L,
            -1200697096423515029L,
            7574758081827016448L,
            -7835451478227965702L,
            -1002086988326058623L,
            9065424470563952266L,
            2015453991560576712L,
            -7536685819336878926L,
            7969746726744730668L,
            -5989966236624112203L,
            -2965017792716944992L,
            8983398544859432442L,
            5612769414131455830L,
            -6339348994157434001L,
            -7742907985428034148L,
            2857582662306319860L,
            7696065139440675027L,
            2210231853551548276L,
            -8446890985832063843L,
            -5391639622165030696L,
            8132271011699544622L,
            -2025144170225134445L,
            872227120249614739L,
            -7901028747463859384L,
            1568476455780381493L,
            -3709774563529996993L,
            5887147752892631863L,
            -1376814350796049487L,
            -6937524305359524845L,
            141575992685564896L,
            7054150295963677488L,
            -5517626999551652431L,
            -2103280861965318381L,
            -3178848374667032243L,
            -4484067389076727056L,
            4368271540363496558L,
            2452638907690143340L,
            3243582744637056237L,
            -1835509613880677091L,
            -7738203921392763977L,
            3738047162206715023L,
            4402001685089254091L,
            -4068091297241941132L,
            -4426860582424065137L,
            5902218224846597287L,
            -1997884221949769514L,
            2327154748766274837L,
            -7937096525795268714L,
            -5937653414232038370L,
            451890104278095225L,
            7624043304963742238L,
            2560952045005500406L,
            -7987893281686002305L,
            -285742234715045964L,
            1305201347441481089L,
            -5745012913707484542L,
            7349324526656019853L,
            -8359751059777011479L,
            1751450889796622438L,
            2953590899523436088L,
            -8794618551330673246L,
            -1975127992605845427L,
            -2756202672713134739L,
            -6319257230258297651L,
            -6323079364751653223L,
            8220202420513081260L,
            -692905131684355604L,
            -3482430934992294892L,
            -1155571988719951932L,
            -8549184713277162433L,
            6519870561301373780L,
            -8699617407892045539L,
            -8500563274262115861L,
            2898508164711114155L,
            4457968153547939969L,
            7372065890086381352L,
            -3726342365247982406L,
            5790022683497175450L,
            7510779253936723985L,
            -3215458958024726931L,
            7201452750198367019L,
            7956248654372863887L,
            658076216398219196L,
            -8031871821754238811L,
            2265114593325677289L,
            -5837318066569561733L,
            -5791208149224984207L,
            -8765011911008766014L,
            -1882440780698880617L,
            2627325777263444180L,
            5838649127790040620L,
            2979260108179650724L,
            8279636284348940168L,
            -4761321577915731184L,
            -8512456792086375286L,
            3031355428582382232L,
            5987830141554026163L,
            2652792021244985771L,
            6966355733413100282L,
            7159982835714190082L,
            -6673619606506651561L,
            6164786673275061032L,
            -2003624168265025612L,
            -3321238942208075809L,
            -8966586916114062642L,
            -6247813175587787990L,
            5882039810305993200L,
            1734521625536181347L,
            -1955030533710992085L,
            4177232406182815752L,
            -6066690434513212716L,
            4421322443367537687L,
            1732111771528243986L,
            -3188441386688214488L,
            -1718255964041398318L,
            -8299211355738869690L,
            -918231973920883507L,
            2121146815623583921L,
            1643448909115080962L,
            -3964255147053884130L,
            1058430760704118640L,
            -2224572972742386294L,
            1544135836705793499L,
            4478260958488465773L,
            8459725788549568553L,
            1419997622597805014L,
            1893847420250300549L,
            6879247441214845308L,
            -9048679800200231078L,
            -6400882338879101755L,
            -7948554312473785987L,
            8735453487192778153L,
            -4593797730252265836L,
            -7385800860538335038L,
            4708046195905519681L,
            -7717262769914848219L,
            -5755107971382382265L,
            -2872666367659224095L,
            -8401617275401086149L,
            6668048931036830194L,
            7957682053112410339L,
            -8213954753751910756L,
            3094992789026988978L,
            -7821899359941273885L,
            5800600557838264942L,
            -7250224623195437611L,
            -7241023121731715319L,
            -2850469544600425665L,
            -8993585073377678752L,
            -6122849388685686656L,
            -3410784344792997969L,
            -8949756733693874660L,
            9090419451347448282L,
            -7965900591208677729L,
            4668499675002887031L,
            3954645038183186198L,
            -9165652702316622425L,
            -8027793847748083086L,
            2011025645194827319L,
            -2446417320856273671L,
            -3635344347367747336L,
            8270128727002662611L,
            -1187203684818418330L,
            446606406676708096L,
            6688801471179810223L,
            2846962582356008389L,
            -6357297138732681120L,
            3934572136831038370L,
            2572617010423749214L,
            805910970142724249L,
            -2596373362263743785L,
            -7028284447674340832L,
            -4349848227397047500L,
            6122425933313928247L,
            -1141220794228348996L,
            3772440641703593006L,
            1960872412730451091L,
            5324492761081781349L,
            1108002420820282098L,
            -497586827607355425L,
            -8803021982402219722L,
            8558883452782266489L,
            8097885385113062937L,
            -2834143512653215312L,
            8914146722905781058L,
            8495228478228979222L,
            5087580510528598765L,
            4799099359368522987L,
            -3458216160318509429L,
            -6307011486119818803L,
            -7289677598820618699L,
            5903840584530584704L,
            5411867913457930218L,
            6521769926221995199L,
            -8823503617486724725L,
            8054751341888681242L,
            -9040673837979513307L,
            -974641380147297209L,
            -4302015407597562126L,
            -7768581128287358777L,
            -4220738678599410842L,
            -8570352799027327579L,
            3412533803111910620L,
            -4504166609433324994L,
            -8966163430301384627L,
            -777238743023685622L,
            -1775289114414529645L,
            8742106940387802150L,
            -9125439104094648610L,
            -5150848637442381740L,
            -5857903874030590013L,
            4717954571385632141L,
            -7129843082021285430L,
            -202240172401697551L,
            2991232139286642810L,
            8123718887220336237L,
            -7983643908607815825L,
            3897710274645030725L,
            -7088007855524351558L,
            -117218034103771675L,
            -2543339595803365336L,
            6557756907897632634L,
            -5941379861112032955L,
            -4936739072641560894L,
            6429987367031380943L,
            -2710705794099457618L,
            -7038704611008016203L,
            5873016337031797065L,
            8005691798806756404L,
            8496836788678867488L,
            -6056632377792610628L,
            6440429313355378977L,
            4758388502528656930L,
            8210146303043085372L,
            -7472705930686975339L,
            345380740734017331L,
            8350754772311516126L,
            -6024463997022256197L,
            4724839352784110317L,
            7417653648007283023L,
            -4644408952543418157L,
            -2840357722673315548L,
            3643251498712376133L,
            -6988164567870815272L,
            8606908379108747821L,
            -735054624977158930L,
            4151238062018601414L,
            -5868744773399751762L,
            -4583380153485425831L,
            4685461029461448134L,
            -3282026738089340242L,
            -3521642072768798618L,
            -6680671787274895420L,
            8631534626725225214L,
            8493911778142908766L,
            -5206348506773244165L,
            -2834238504379891358L,
            5206866845573542498L,
            1629196333054048573L,
            -2806130916316161395L,
            -8446339311748674772L,
            7698402569261566192L,
            -7585267928926789317L,
            -6142377439241033281L,
            -3183288046867980787L,
            -2116300064558475753L,
            8738469281430821679L,
            -6678851646721222356L,
            7684304049836077479L,
            1994985930693442277L,
            4886107198655564697L,
            5754530429573255982L,
            -400233876868713621L,
            -2601714693217374300L,
            -8231868561195059836L,
            -7161072382041706606L,
            7899247134325967386L,
            4449715243831577526L,
            -4363236382305153035L,
            730499986773921656L,
            -1964823102478604867L,
            1115343608422711938L,
            9163192708706994441L,
            7703822051053777792L,
            5415735284671882184L,
            -5468978955855487028L,
            -7473490210058876796L,
            -4151596684187983271L,
            -4614902730142795880L,
            -1886875531800376965L,
            6946381301941537855L,
            5511147791176590427L,
            3948791992936021874L,
            -1482463613293386548L,
            5529552959214710708L,
            -1513079121703126218L,
            -4832063273005186191L,
            7509857703941620061L,
            -7094585359326952511L,
            1792155413444913969L,
            -2097671170610940961L,
            -6815607312425210083L,
            -8449146876685424586L,
            779119643766594756L,
            8319071102628121385L,
            7343016955376428731L,
            8023360076061989522L,
            -8677729998295209264L,
            2320711592368663573L,
            4501180945312875927L,
            -5389535528521048532L,
            9091774344963094982L,
            -5605606394718898525L,
            6231774512881918051L,
            -4386098748681370745L,
            -4338100608515806147L,
            3641720919992633393L,
            1202136764555805994L,
            -7574036376183520806L,
            394346878964313906L,
            5398830498477672256L,
            6298289751731987258L,
            -3073414964824625834L,
            5264638586212065724L,
            6357112773275452466L,
            -3620432647334040791L,
            5727763947623200896L,
            -4407276106464365831L,
            -1550958948405349026L,
            -6727362043137912669L,
            4104734055532711056L,
            3608847157873841699L,
            -8942855144961502840L,
            -8578323541668562548L,
            -3007605323023980885L,
            2071218313973505264L,
            -7525909651607683123L,
            -8657795510448273911L,
            6947298606408815363L,
            5839403081156127920L,
            8836474304282804607L,
            3065287417070163173L,
            -3230598142074586789L,
            3237520195952523496L,
            3863867613138176569L,
            -5479096255173721901L,
            7991629222330040192L,
            393519260505134420L,
            -4835221771250591792L,
            5598746595968126002L,
            -4107669903786734828L,
            -4515609196564143678L,
            4645411082402455687L,
            8320691411446351391L,
            -5546684107823914386L,
            -188133305768939679L,
            -5015178611245361464L,
            -392591730409876515L,
            6175520449388531557L,
            4637863943492334900L,
            6488255937526602797L,
            8119622780895006854L,
            5513927902426841995L,
            7604369994139774261L,
            -2875596255162870498L,
            -4988980030056442216L,
            -1876655615633862269L,
            -3793805242107887494L,
            -7036263809774454682L,
            -3515231739139212368L,
            6909917596827199110L,
            -5874152019929689043L,
            -5201958026132590535L,
            1292160675905624221L,
            2328202703034306205L,
            6734724797423268877L,
            -8619390185059054221L,
            -8096996341379986558L,
            5759876638636314498L,
            19834486032886889L,
            -8733283764338137840L,
            -5711713150823725968L,
            -5153999107334355369L,
            4712693140432393804L,
            6445329914413093427L,
            -3185369590753377223L,
            -2787163346312167510L,
            7199261141546159419L,
            -7847634678836791336L,
            -6031422724347450652L,
            2844433306466159230L,
            -120272886510769415L,
            -7626082089518353304L,
            -8622427842345615076L,
            -9221290168522782646L,
            2765067133342783048L,
            3013207445549246202L,
            361873354469627066L,
            3499637006180816632L,
            2474083035671634644L,
            -5975459110417015372L,
            -9005342829853412649L,
            206097324253179433L,
            4011087430288225005L,
            -8743339950021641923L,
            -4551268665201033543L,
            1623561002199636546L,
            7008115837818432005L,
            -1423463759668961628L,
            -7158999110222662199L,
            6731939585317875448L,
            7242462507891237429L,
            6990422661529996044L,
            -3205383084774746917L,
            -7408586003031579188L,
            -2810468426252066566L,
            5639477519929697607L,
            -8939112301404113402L,
            1623527223382728792L,
            4001879716926831576L,
            -3700116006449382226L,
            4751651814684412331L,
            -5253558770392608008L,
            -7520061920322094816L,
            -6940173329578390444L,
            3654234494709523104L,
            8986351348658704266L,
            -5465012633315648888L,
            -6078184684299687668L,
            7203156828395490747L,
            -1744372194781506940L,
            5911580693938842501L,
            2763663605783882658L,
            -8101587611452923522L,
            6578896992094339928L,
            7157538873411388366L,
            4830422412541707835L,
            2826578266528462242L,
            -3425387971638774830L,
            6109127369698202681L,
            -6017930792720779340L,
            -6848210857653994466L,
            -9162844086776234889L,
            -1886799559645361156L,
            -1875243833643832289L,
            1889801364688100456L,
            3135985968657772432L,
            -4346496098691158624L,
            666434228646612396L,
            -2109977894231543920L,
            -8412729767310153447L,
            9091583682738901363L,
            -3884101648345989012L,
            5420454665014061156L,
            -4442346896546488608L,
            -3769859128564144927L,
            -5924922626033556347L,
            -1570398145164127008L,
            -924972770251733386L,
            -7326175356931084817L,
            -8453292617241062973L,
            8986153734833387804L,
            7650701965128895001L,
            4439782100102086978L,
            -2142585461804257504L,
            -6601691310296684389L,
            -3696280268107232071L,
            -6365392271429036139L,
            1705926610531936092L,
            -4449889116096234142L,
            6333739652694113412L,
            5838841856698092597L,
            -1648244529010475319L,
            -8941138297485679207L,
            4773515880327945551L,
            8938473269740071583L,
            -5194690576216809610L,
            -1830038153226845762L,
            -7974052868291485797L,
            -412981691738537815L,
            -420484626838213767L,
            -7318984627510202687L,
            8343920852390440529L,
            -5047171429425010174L,
            -2966291382578283164L,
            -6706239659839520996L,
            -1473342875066133310L,
            -578929068527874093L,
            -7644051197120336211L,
            -7150839198184017760L,
            7786608394384444685L,
            8612849761118397444L,
            -2675649209633005723L,
            5005199031354733454L,
            5185857208368441284L,
            -8094398361948768624L,
            342765566810418951L,
            -7507346913866367199L,
            242854639721036490L,
            -8648433086238156668L,
            -32464100214722910L,
            9032997613592646693L,
            -6545882564816245853L,
            7444818020488769302L,
            -7332012222980184175L,
            -5368075104865037676L,
            -8422197915746461706L,
            2435457185977832354L,
            -7768247752316476767L,
            -5848469226699100369L,
            -7264609657811938197L,
            -1089984100206518472L,
            -2007749816926465101L,
            5819208381283229239L,
            5267277079990562728L,
            327274277630478009L,
            7487565923577389785L,
            -4311049598081632251L,
            -7820859114704678437L,
            3630733309392248544L,
            3994852612828294764L,
            7379114503173496670L,
            2830946481148417382L,
            5237991000522591322L,
            2965315923995406183L,
            4917617365796447808L,
            5142823286145469937L,
            3274456302689320821L,
            -5220900638492411861L,
            -1394244475204679144L,
            -6532638328459745767L,
            -8359366669440656639L,
            6712785706329510196L,
            8477756556252220511L,
            4879663468653495748L,
            4921033041112793712L,
            -5972173014060071979L,
            -191189509003899636L,
            806316394688018129L,
            -5194920702562327183L,
            -7288643646556816856L,
            2349565652499539484L,
            3741068692903563947L,
            -2325636584175705144L,
            -6305490881949348706L,
            5538175842676810865L,
            -590972363936347448L,
            3028685379530773022L,
            412899835969032638L,
            -3009340835031473120L,
            -3375763241012795622L,
            -7029659409554021919L,
            -7449396791698310133L,
            -4524915334445289600L,
            -7564440921830194016L,
            -7563508042061966080L,
            -6166643937908962403L,
            2946470039305508701L,
            -2394772035778249290L,
            -4029575612029634557L,
            -1341919878837636815L,
            -7928304302411939421L,
            6583647396281900387L,
            2057574666208908267L,
            7014574875833960180L,
            8787750027954392628L,
            4869865157831863689L,
            -2475470382054997930L,
            6280058996409287482L,
            -8720134676581493664L,
            -2335034597113609180L,
            2859599546672954560L,
            6907722738198769222L,
            6379729419302056791L,
            3228553877574266713L,
            1299214862587314021L,
            -245789475804030066L,
            -5190843266508079530L,
            -248720324447028353L,
            550804466847452399L,
            4066865060483054022L,
            -5845080963402852396L,
            1510251486032824238L,
            -5747246879906404008L,
            -2965873188312680464L,
            -3529024068147820773L,
            -3314654942100011468L,
            -2753632338131581243L,
            -8181895720344803508L,
            -6287025008176609128L,
            7946893868384063397L,
            -3794986194797970591L,
            -1813659583823627609L,
            -1496231497476338636L,
            -8143540961979394589L,
            7968560866709380909L,
            3321611821464087955L,
            6293421467444897435L,
            9121556950463760731L,
            -7167142351173572126L,
            5426112822543582499L,
            3473989359977328814L,
            1431768587989963685L,
            7138754551107551892L,
            -6508857121118506118L,
            2763801286741328633L,
            -8375347564814697375L,
            8909193363698375672L,
            6614357698473828996L,
            4375103817573422766L,
            -869712809634843772L,
            7139169100122591239L,
            -8743416218225305732L,
            -2189109296391552891L,
            8547738467815776101L,
            -4250839856646330237L,
            60436016340228281L,
            -3475520270506116608L,
            482350072966783901L,
            -4513048544084201929L,
            -3496769957397738922L,
            -7399251001402577262L,
            -6846632084253802294L,
            -4133372205923807303L,
            -8987451120728832772L,
            -7924808760149990966L,
            5537882085026229528L,
            5707731071962715738L,
            -8444992548615232908L,
            -1950384193454110626L,
            -3315915507840546739L,
            2288909543573064368L,
            -3075759467544212905L,
            4070886085426083434L,
            5326314623724279460L,
            2068651586742479980L,
            9102650541405188469L,
            -6258503573093147202L,
            2761327425021547093L,
            -8888768080858801638L,
            6455268107234343129L,
            8226449481322665956L,
            4435222163806637045L,
            5015564418260824345L,
            -3077216043014073303L,
            3551208541886687010L,
            -4711654161792990620L,
            -8123100112856038537L,
            -6085543859631025166L,
            4065145622803060637L,
            -2915935169680205753L,
            -8190679645691655104L,
            618192272116369493L,
            6528511323407329423L,
            3531677234846913279L,
            8900348548078972246L,
            -7003791829172693861L,
            -3728660464814663094L,
            -7208382980839062854L,
            5605167541969262249L,
            -6563520962221524752L,
            -5617082898853372916L,
            -110840310360630269L,
            1623290229954179431L,
            -8543390908557423176L,
            4964534899915144650L,
            7038139808742913048L,
            -523701621326847615L,
            -5604455250174540667L,
            -5088597207563684851L,
            -8798480794497720861L,
            5236957659113480746L,
            6693258174295279140L,
            -444182269393829173L,
            -1307417147014859573L,
            5484757858921337449L,
            -6771160897311366228L,
            6082946633175686397L,
            7451377961099375148L,
            3726246304026209893L,
            486409220887619585L,
            -7792575937170224605L,
            -1062476184698219364L,
            -5405576371636234144L,
            -5491306242763410833L,
            3386441073298147978L,
            1223413613941944543L,
            7374064499501644167L,
            1097119129370032980L,
            4452635461951524315L,
            7609962486931475019L,
            -4426528169986168018L,
            -4466396671007715625L,
            7754980764475629637L,
            5353626650068943521L,
            4826800815907629409L,
            -5892314259184686613L,
            7320279860469630428L,
            -2189453056710516799L,
            -5631199038092250000L,
            7146966064158442157L,
            1728562881068330204L,
            -6485593530409392793L,
            4890004235673966259L,
            -1435831204321909583L,
            -314576003133191501L,
            -6166019672887551160L,
            59675326729574457L,
            4753187079539810054L,
            -4040195571438127202L,
            9220161162917426205L,
            1249262535107581979L,
            591324355933224207L,
            7878865813994641735L,
            2258491916025859757L,
            6393375006398705833L,
            7428189188349143368L,
            -5977818166909957548L,
            -861759363890754630L,
            5728075435414507707L,
            -3829782466827093481L,
            -399542008572178468L,
            -190091776540325388L,
            -869266733361870487L,
            3134609639733252042L,
            -3020274296066912069L,
            229230335862572125L,
            -8602903822683326918L,
            -8459705490361579890L,
            5635573591575935279L,
            7008455152809859612L,
            -336482988465547015L,
            -270633760853166247L,
            -4235796845328329756L,
            5577273924904587438L,
            3357735333794331251L,
            6712435191995155436L,
            4810379532623411846L,
            4300196098269900060L,
            3154556911603113308L,
            -8511670301188845554L,
            -2999046364365762195L,
            6584388346924307802L,
            -4661584872051470674L,
            4021341529652810869L,
            -2015214074921418385L,
            5686511480104803417L,
            5871914091359757129L,
            -3393505529321015088L,
            6163756339043109243L,
            9101669036167372147L,
            -1899932849467655146L,
            5824186349112418491L,
            -8145284166710588042L,
            -6611701498711331348L,
            -6266960481292240589L,
            -3084455978690959963L,
            7697956564329709689L,
            3700283975551202967L,
            -5533303783578022135L,
            8378711223063743178L,
            2492782752128314395L,
            6855016727935188375L,
            3625656511617632460L,
            -4251349403074309541L,
            3151176014618434986L,
            425736952595744767L,
            5923183972882835252L,
            -3238925957567319734L,
            3898582149520627945L,
            3458473079633476908L,
            7704682850319013375L,
            1842396631322192559L,
            7567028697250299275L,
            5240676850732013660L,
            6382282405520961911L,
            1566536267234869180L,
            -2835100022053946918L,
            -4523269803305476013L,
            -3806348641121703481L,
            1384369476288249124L,
            6231279404611102616L,
            -8454566059926845212L,
            7283950756448696336L,
            3458868225444389028L,
            -381596314670703567L,
            787649645204541026L,
            8429892307161132531L,
            -2754650157539977875L,
            6480789808134601530L,
            3540542002201388306L,
            3254204631399902069L,
            6629558632232604992L,
            -9092902320915347164L,
            -372100901842978078L,
            464838775478871267L,
            9152084549887771221L,
            -7099564497106472246L,
            5966240327458336368L,
            -4601542284485235966L,
            6121387861245362677L,
            -2619397438396753528L,
            -436558761149429385L,
            -5224284441462461715L,
            -6204855901436042682L,
            -4960730971454468526L,
            -6619432020891056531L,
            -8213313727097141978L,
            3898253699196932631L,
            418427635668778769L,
            1909959730849876819L,
            -156104913395429951L,
            -3349170772578933389L,
            4737457637061918044L,
            -6543691023100793823L,
            5612292184128470930L,
            9090527671621391380L,
            3116972542676290627L,
            -7035635268884213641L,
            -7602757739905885478L,
            1659319055388088428L,
            855509758012743515L,
            -5114766375850763759L,
            8702033804174054036L,
            -3816851761996583818L,
            1856190089489487890L,
            -2369697444356494923L,
            2695077479768270004L,
            502198934054201052L,
            5519845425407030889L,
            1611532040699223820L,
            6767299136770443891L,
            -2172244946433663501L,
            8094365789891696280L,
            7560305999738183255L,
            -5656435763098404506L,
            8253258656968587806L,
            -7666996379248854323L,
            4858238636848217420L,
            -1726445861078340809L,
            -3746766183147946290L,
            -4030449570423463429L,
            2499389842324856802L,
            9165300983611214738L,
            -4513483465351210434L,
            -1650814128835026341L,
            3623068358979160291L,
            -4005314879692370867L,
            9024465520738069539L,
            -2766854086642622702L,
            -9096515489637725617L,
            1946857123614453527L,
            -6487421792014095731L,
            -6979362536947721089L,
            -4558160630710147255L,
            -7617336321136533644L,
            4738167541257739048L,
            -4695404283529062888L,
            -8320050660211072249L,
            -1626019363966810617L,
            1413698973873786534L,
            -527186300320860631L,
            395898742428798349L,
            -7250216698344090198L,
            -776645944234645137L,
            -3245468109731091265L,
            6341704719303254616L,
            4956331125367620560L,
            -7489401322627851823L,
            2115968027948631117L,
            -5984608957143676952L,
            -7127432561239351305L,
            5319539641447027165L,
            -1000474229426479287L,
            -150208883862918458L,
            -8344871636777112783L,
            -1542468490210189468L,
            -6170445074685047745L,
            -4263016810054173620L,
            9104406600303610638L,
            8194407505118275079L,
            -7279178781734972715L,
            2937352060494234522L,
            -2470412390340197582L
    };
}
